From 8f4e0705dc0f9dca0d3db019c2eac4089aba022e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Fri, 19 Jan 2018 15:00:22 +0100 Subject: [PATCH] gl renderer: Fix shadow node child offset We shouldn't apply the shadow offset when drawing the child offscreen, instead apply it afterwards when we draw it to the current render target. --- gsk/gl/gskglrenderer.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c index 71ba645aeb..84e74d72de 100644 --- a/gsk/gl/gskglrenderer.c +++ b/gsk/gl/gskglrenderer.c @@ -1327,21 +1327,20 @@ render_shadow_node (GskGLRenderer *self, prev_dx = builder->dx; prev_dy = builder->dy; - ops_offset (builder, dx, dy); - if (gsk_render_node_get_node_type (shadow_child) == GSK_TEXT_NODE) { + ops_offset (builder, dx, dy); render_text_node (self, shadow_child, builder, &shadow->color, TRUE); ops_offset (builder, prev_dx, prev_dy); continue; } + /* Draw the child offscreen, without the offset. */ add_offscreen_ops (self, builder, - dx + min_x, dx + max_x, dy + min_y, dy + max_y, + min_x, max_x, min_y, max_y, shadow_child, &texture_id, &is_offscreen, FALSE); - ops_offset (builder, prev_dx, prev_dy); - + ops_offset (builder, dx, dy); ops_set_program (builder, &self->shadow_program); ops_set_color (builder, &shadow->color); ops_set_texture (builder, texture_id); @@ -1373,6 +1372,8 @@ render_shadow_node (GskGLRenderer *self, ops_draw (builder, vertex_data); } + + ops_offset (builder, prev_dx, prev_dy); } /* Now draw the child normally */ -- 2.30.2